"""
补充内容：python之时间处理
"""

# 1、我们如何抽象出"时间"(属性、方法)
# 属性：年月日、时分秒、时区
# 方法：加、减、乘、除

# 2、时间的描述
# 2020年4月14日10:23:50北京时间  --->  时间点(时刻)
# 24个小时                      --->  时间段(一段时间)

# 3、python中定义时间对象
from datetime import datetime
import pytz # pip3 install pytz
# (1)、时间点对象
t1 = datetime(
    year=2020, month=4, day=14, hour=10, minute=14, second=45,
    # tzinfo=<时区对象>
    tzinfo=pytz.timezone('Asia/Shanghai') # 时区对象,代表"上海时区"
)
t2 = datetime(
    year=2020, month=4, day=14, hour=22, minute=14, second=45,
    # tzinfo=<时区对象>
    tzinfo=pytz.timezone('Asia/Shanghai') # 时区对象,代表"上海时区"
)

from datetime import timedelta
# (2)、时间段对象
delta1 = timedelta(hours=8) # 代表"8个小时"，时间段对象


# 4、python中如何操作时间对象
# (1)、时间点 - 时间点 = 时间段
d1 = t2 - t1
print("d1: ", d1, '类型：', type(d1))
# (2)、时间点 +/- 时间段 = 时间点
t3 = t1 + timedelta(hours=5)
# 2020-04-14 15:14:45+08:06   --->  +08:06表示一个时区
print("t3: ", t3)
# (3)、时间段 +/- 时间段 = 时间段
d2 = timedelta(days=2) - timedelta(hours=10)
print('d2: ', d2)
# (4)、时间段 */ 整数 = 时间段
d3 = timedelta(hours=6) / 3
print("d3: ", d3)


# 5、时区转化
my_time = datetime(
    year=2020, month=4, day=14, hour=10, minute=14, second=45,
    # tzinfo=<时区对象>
    tzinfo=pytz.timezone('Asia/Shanghai') # 时区对象,代表"上海时区"
)


out_time = my_time.astimezone(
    tz=pytz.timezone('UTC')
)

# 2020-04-14 10:14:45+08:06
print("my_time: ", my_time)
# 2020-04-14 02:08:45+00:00
print("out_time: ", out_time)


# 6、获取当日的零时刻
# 2020年4月14日0点0分0秒 上海
# 1、获取当前的时刻
# datetime.utcnow()得到UTC当前时刻，没有时区属性
# datetiem.now()的到系统所在本地的当前时刻，没有时区属性
local_time = datetime.now()
# 2、把时分秒修改为0
# # 2020-04-14 0:0:0  +08:06
local_0_time = local_time.replace(
    hour=0, minute=0, second=0, microsecond=0,
    tzinfo=pytz.timezone("Asia/Shanghai") # 手动添加时区属性
)
# 2020-04-14 00:00:00 +08:06
print("本地0时刻: ", local_0_time)












